import java.util.ArrayList;
import java.util.List;

/**
 * 给你一个 m * n 的矩阵，矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
 * 幸运数是指矩阵中满足同时下列两个条件的元素：
 * 在同一行的所有元素中最小
 * 在同一列的所有元素中最大
 * 链接：https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix
 */
public class LuckyNumbersInAMatrix {
    public static List<Integer> luckyNumbers (int[][] matrix) {
        List<Integer> ansList = new ArrayList<>();
        int arr_len = matrix[0].length;
        int[] arr = new int[arr_len];
        for (int i=0;i<matrix.length;i++){
            int temp_val=Integer.MAX_VALUE;
            int flag =0;
            for (int j =0;j<matrix[i].length;j++){
                if (matrix[i][j]<temp_val){
                    temp_val = matrix[i][j];
                    flag = j;
                }
            }
            //这里应该开始判断是否为这个列最大的
            arr[flag] = Math.max(temp_val,arr[flag]);

        }
        for (int num:arr){
            if (num!=0)
                ansList.add(num);
        }
          return ansList;
    }


    public static void main(String[] args) {
        int[][] matrix = {
                {3,7,8},
                {9,11,13},
                {15,16,17}
        };
        luckyNumbers(matrix);

    }
}
